<?php
class xa_in {



	public static function nat(&$number, $default = null) {
		if (!empty($number) && (strval($number) === strval(abs(intval($number))))) {
			return intval($number);
		}
		return ($default ? $default : false);
	}



	public static function int(&$number, $default = null) {
		if (isset($number) && preg_match('/^(\-?\d+)$/', $number)) {
			return intval($number);
		}
		return ($default ? $default : false);
	}



	public static function float(&$number, $default = null) {
		if (isset($number)) {
			$number = strtr($number, ',', '.');
			if (preg_match('/^(\d*\.\d+|\d+)$/', $number)) {
				return floatval($number);
			}
		}
		return ($default ? $default : false);
	}



	public static function date(&$input, $default = null) {
		if (isset($input)) {
			if (($time = strtotime($input)) !== false) {
				return date('Y-m-d', $time);
			}
		}
		return ($default ? $default : false);
	}



	public static function datetime(&$input) {
		if (isset($input)) {
			if (($time = strtotime($input)) !== false) {
				return date('Y-m-d H:i:s', $time);
			}
		}
		return false;
	}



	public static function time(&$input) {
		if (isset($input)) {
			if (($time = strtotime($input)) !== false) {
				return date('H:i', $time);
			}
		}
		return false;
	}



	public static function symbol(&$input, $default = null) {
		if (isset($input) && preg_match('/^[0-9a-z\_\-]+$/i', $input)) {
			return $input;
		}
		return ($default ? $default : false);
	}



	public static function dict(&$input, $value_list, $default = null) {
		if (isset($input) && in_array($input, $value_list)) {
			return $input;
		}
		return ($default ? $default : false);
	}



	public static function set(&$input, $default = array()) {
		return !empty($input) ? explode(',', $input) : $default;
	}



	public static function clean(&$input) {
		return isset($input) ? trim(strip_tags($input)) : '';
	}

	/*
	public static function date(&$date, $as_utime = false) {
		if (isset($date) && (($time = strtotime($date)) !== false)) {
			return ($as_utime ? $time : date('Y-m-d', $time));
		}
		return false;
	}
	*/
}
